package leetcode.array;

import java.util.Arrays;

/**
 * @author 陈正龙
 * @date 2022/7/20 17:09
 * 977.有序数组的平方
 */
public class _977 {

    /*
    给你一个按 非递减顺序 排序的整数数组 nums，返回 每个数字的平方 组成的新数组，要求也按 非递减顺序 排序。


    示例 1：
    输入：nums = [-4,-1,0,3,10]
    输出：[0,1,9,16,100]
    解释：平方后，数组变为 [16,1,0,9,100]
    排序后，数组变为 [0,1,9,16,100]

    示例 2：
    输入：nums = [-7,-3,2,3,11]
    输出：[4,9,9,49,121]

     */

    public static void main(String[] args) {
        int[] arr = new int[]{-4,-1,0,3,10};
        int[] nums = sortedSquares(arr);
        System.out.println("nums = " + Arrays.toString(nums));
    }

    /**
     * 思路 两边进行比较 大的往走遍
     */
    public static int[] sortedSquares(int[] nums) {


        int[] result = new int[nums.length];
        int left = 0;
        int right = nums.length - 1;
        int index = nums.length - 1;
        while (right >= left) {
            if (nums[left] * nums[left] > nums[right] * nums[right]) {
                result[index] = nums[left] * nums[left];
                left++;
            } else {
                result[index] = nums[right] * nums[right];
                right--;
            }
            index--;
        }
        return result;

    }
}
